
requests 是一個非常流行的 Python 套件,用於發送 HTTP 請求。它的設計目的是使 HTTP 請求變得簡單易用。以下是對 requests 套件的介紹:
requests 的接口直觀且易於使用,使得發送各種 HTTP 請求變得簡單。requests:pip install requests
& 分隔,並且以 ? 開始。數據對任何人都是可見的 ,這意味著敏感信息不應該通過 GET 方法傳輸。參數有長度限制 。import requests
# 直接在 URL 夾帶參數
response = requests.get('https://httpbin.org/get?key1=value1&key2=value2')
print(response.text)  # 輸出網頁內容
# 參數不夾帶在URL
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://httpbin.org/get', params=params)

主體發送 。這意味著參數不會出現在 URL 中。適合傳輸敏感或私密數據 。沒有數據長度限制 ,適用於大量數據的傳輸。payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=payload)
print(response.text)

| 方法 | 說明 | 範例 | 
|---|---|---|
| GET | 向指定的資源發送一個 HTTP GET 請求,用於請求數據。 | requests.get('https://httpbin.org', params={'key': 'value'}) | 
| POST | 向指定資源提交數據進行處理請求。通常用於提交表單。 | requests.post('https://httpbin.org', data={'key': 'value'}) | 
| PUT | 向指定資源位置上傳其最新內容。 | requests.put('https://httpbin.org', data={'key': 'value'}) | 
| DELETE | 請求伺服器刪除指定的資源。 | requests.delete('https://httpbin.org') | 
| PATCH | 對資源進行部分修改。 | requests.patch('https://httpbin.org', data={'key': 'value'}) | 
在 requests 模組中,HTTP 請求的頭部(Headers)是關鍵的組成部分,用於在發送請求時向伺服器提供額外的上下文信息。頭部是由一系列的鍵值對構成的,它們定義了請求的許多重要屬性,如內容類型、用戶代理、認證信息等。
application/json、application/x-www-form-urlencoded。no-cache 或 max-age。requests 中設置頭部在 requests 中,可以在發送請求時通過 headers 參數自定義頭部:
headers = {
    'User-Agent': 'MyApp/1.0',
    'Accept': 'application/json',
    'Authorization': 'Bearer <TOKEN>'
}
response = requests.get('https://httpbin.org', headers=headers)
Authorization 頭部時。| 參數 | 說明 | 範例 | 
|---|---|---|
| User-Agent | 標識發出請求的客戶端類型。 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' | 
| Accept | 指定客戶端能夠接收的內容類型。 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8' | 
| Content-Type | 發送數據到伺服器時的內容類型。 | 'Content-Type': 'application/json' | 
| Authorization | 用於認證的憑據,如基本認證或令牌。 | 'Authorization': 'Bearer YOUR_TOKEN' | 
| Accept-Encoding | 標識客戶端支持的內容編碼類型。 | 'Accept-Encoding': 'gzip, deflate, br' | 
| Connection | 控制是否保持網絡連接的活躍。 | 'Connection': 'keep-alive' | 
| Host | 指定發送請求的目標伺服器。 | 'Host': 'example.com' | 
| Referer | 指示請求的原始資源的地址。 | 'Referer': 'https://www.example.com' | 
| Cookie | 從客戶端傳送到伺服器的 Cookie。 | 'Cookie': 'name=value; name2=value2' | 
當使用 requests 模組進行 HTTP 請求時,伺服器的回應(即回傳的資料)可以通過 Response 對象來訪問和解析。以下是如何解析 requests 回傳的資料的不同方面:
在使用 requests 模組進行 HTTP 請求時,伺服器會返回不同的 HTTP 狀態碼,以表示請求的結果。以下是一些常見的 HTTP 狀態碼及其說明:
response = requests.get('https://example.com')
status_code = response.status_code
| 代碼 | 說明 | 
|---|---|
| 200 | OK - 請求成功處理。 | 
| 201 | Created - 請求成功並創建了新的資源。 | 
| 202 | Accepted - 請求已被接受進行處理,但處理尚未完成。 | 
| 204 | No Content - 請求成功,但沒有新的內容返回。 | 
| 301 | Moved Permanently - 請求的資源已永久移動到新位置。 | 
| 302 | Found - 請求的資源臨時從不同的 URI 回應。 | 
| 400 | Bad Request - 伺服器無法或不會處理請求(客戶端錯誤)。 | 
| 401 | Unauthorized - 認證失敗或未提供認證。 | 
| 403 | Forbidden - 伺服器拒絕請求。 | 
| 404 | Not Found - 找不到請求的資源。 | 
| 405 | Method Not Allowed - 不允許使用請求中指定的方法。 | 
| 500 | Internal Server Error - 伺服器遇到了不知道如何處理的情況。 | 
| 502 | Bad Gateway - 獲取請求的伺服器,從上游伺服器收到無效回應。 | 
| 503 | Service Unavailable - 伺服器目前無法使用(超載或停機維護)。 | 
| 504 | Gateway Timeout - 未能及時從上游伺服器或輔助伺服器收到請求。 | 
這些狀態碼是根據 HTTP 標準定義的,代表了伺服器對 HTTP 請求的不同回應。在使用 requests 或其他 HTTP 客戶端進行網絡請求時,正確理解這些狀態碼對於處理不同的回應非常重要。
text_content = response.text
binary_content = response.content
json_data = response.json()
headers = response.headers
encoding = response.encoding
response.encoding = 'utf-8'
cookies = response.cookies
history = response.history
通過以上方法,您可以根據需要從 requests 的回應中提取和處理各種數據。在實際的應用中,根據伺服器回應的特點和需求選擇合適的解析方式非常重要。
requests 時應注意處理可能出現的異常,如 ConnectionError、Timeout 等。with 語句管理回應對象,以確保釋放網絡資源。requests 進行網路爬蟲時,應尊重目標網站的 robots.txt 規則,並確保符合相關法律法規。requests 的功能強大且使用方便,是 Python 網路程式設計和網路爬蟲的重要工具之一。
HTTPBin 是一個線上服務,用於測試 HTTP 請求和回應。它提供了一系列端點,每個端點都展示了特定類型的行為,使得開發者可以測試和理解 HTTP 協議的不同方面。HTTPBin 對於學習 HTTP 協議、調試和測試客戶端(如網頁瀏覽器和 HTTP 客戶端庫)非常有用。
/ip:返回請求者的 IP 地址。/user-agent:返回請求者的 User-Agent 信息。/headers:返回請求的 HTTP 頭部信息。/get:返回 GET 請求數據。/post:返回 POST 請求數據。/status/:code:返回一個特定的 HTTP 狀態碼。/response-headers:返回自定義的回應頭部。/redirect/:n:重定向到一個新的 URL,次數為 n。/cookies:返回請求中的 cookies。/delay/:n:在回應之前等待 n 秒。總之,HTTPBin 是一個實用的工具,無論是對於學習 HTTP 協議的新手還是需要測試和調試 HTTP 請求的經驗豐富的開發者。
原始碼

Requests 程式 抓取網頁資訊import requests
response = requests.get('https://tw.stock.yahoo.com/')
print(response.text[0:1000]) # 印出前1000個字

在開始使用 requests 模組之前,建議先對 HTTP 傳輸協定有一定的了解和認識。實際上,requests 模組是一個建立在 HTTP 協定之上的工具,它的主要功能是協助我們通過網絡請求來獲取資料,無論是 HTML 頁面內容還是 JSON 格式的數據。因此,對 HTTP 協定的基本原理和操作有所熟悉,將有助於您更有效地使用 requests 模組,並能更好地理解網路請求和響應的過程。這包括瞭解不同的 HTTP 方法、狀態碼、請求頭部以及如何處理響應數據等。掌握這些基礎知識,將為您在網絡程式開發領域的進一步學習和實踐打下堅實的基礎。
分享所學貢獻社會
[Python教學]開發工具介紹
[開發工具] Google Colab 介紹
[Python教學] 資料型態
[Python教學] if判斷式
[Python教學] List 清單 和 Tuple元組
[Python教學] for 和 while 迴圈
[Python教學] Dictionary 字典 和 Set 集合
[Python教學] Function函示
[Python教學] Class 類別
[Python教學] 例外處理
[Python教學] 檔案存取
[Python教學] 實作密碼產生器
[Python教學] 日期時間
[Python教學] 套件管理
[Python爬蟲] 網路爬蟲
[Python爬蟲] 分析目標網站
[Python爬蟲] 發送請求與解析網站內容
最後最後有一件小小的請求,請大家幫我填寫一下問卷,
讓我們知道你想上怎麼樣課程,感激不盡。
問卷這邊
Facebook 粉絲頁 - TechMasters 工程師養成記
[Python爬蟲] 網路爬蟲
[Python爬蟲] 分析網站
[Python爬蟲] Requests 模組